80 PRINT : PRINT :A$ = " THIS IS THE FAMOUS GAME OF TIC-TAC- TOE, ADAPTED FOR THE APPLE ]" + CHR$(91) +" COMPUTER.": GOSUB 1200: PRINT : PRINT
82 A$ = "YOU CAN PLAY THE COMPUTER OR YOU CAN PLAY ANOTHER INEFFECTIVE HUMAN. **WARNING**, IF YOU DECIDE TO PLAY ME, THE BEST YOU CAN DO IS TIE. YOU WILL NEVER BEAT ME.": GOSUB 1200
84 PRINT :A$ = "-----": GOSUB 1200: PRINT : PRINT
90 A$ = "TO PLACE YOUR MOVE, YOU NEED TO GIVE AN X COORDINATE AND A Y COORDINATE, EACH FROM 1 TO 3.": GOSUB 1200
115 PRINT : PRINT : PRINT :A$ = "HIT A KEY TO START " + CHR$(91) +" ]": GOSUB 1400
216 NORMAL :A$ = "DO YOU WANT TO PLAY ME OR SOME USELESS HUMAN?": GOSUB 1200: GET A$: IF A$ < >"H" AND A$ < >"M" AND A$ < >"Y" THEN HOME : GOTO 216
217 IF A$ < >"H" THEN 220
218 PL = 1:A$ = "PLAYER ONE IS X AND GOES FIRST, PLAYER TWO IS O AND GOES AFTER. DECIDE WHO IS WHO.": PRINT : GOSUB 1200: FOR I = 1 TO 1500: NEXT : HOME : GOTO 300
220 VTAB 24: HTAB 1: NORMAL :A$ = "WOULD YOU LIKE HEADS OR TAILS ( )?": GOSUB 1300: PRINT CHR$(8) CHR$(8) CHR$(8);:A$ = "H T ": SPEED= 150: GOSUB 1100: HOME : SPEED= 255
222 GET C$: IF C$ < >"H" AND C$ < >"T" THEN 220
223 IF C$ = "H" THEN C$ = "HEADS"
224 IF C$ = "T" THEN C$ = "TAILS"
226 A$ = "OKAY, YOU WANT " +C$: GOSUB 1200: PRINT
230 FOR I = 1 TO 30 + RND(1) *40: IF RND(1) <.5 THEN PRINT "HEADS": GOTO 240
235 PRINT "TAILS"
240 VTAB PEEK(37): FOR K = 1 TO 5:P = PEEK( -16336): NEXT : NEXT
250 IF RND(0) <.5 THEN D$ = "HEADS": GOTO 255
252 D$ = "TAILS"
255 VTAB 22: CALL -868: IF D$ < >C$ THEN A$ = "I GO FIRST.": GOSUB 1300: FOR I = 1 TO 500: NEXT : GOTO 400
260 A$ = "YOU GO FIRST.": GOSUB 1300: FOR I = 1 TO 500: NEXT
300 GOSUB 2100: HOME : IF PL THEN VTAB 24: PRINT " PLAYER # "PL;
302 B$ = "/-\!": VTAB 22: CALL -868: HTAB 1:A$ = "X COORDINATE IS " + CHR$(91) +" ]": GOSUB 1300: PRINT CHR$(8) CHR$(8);:A$ = B$: GOSUB 1100: GET A$: PRINT A$: IF A$ <"1" OR A$ >"3" THEN 302
305 CX = VAL(A$) -1
310 VTAB 23: HTAB 1: CALL -868:A$ = "Y COORDINATE IS " + CHR$(91) +" ]": GOSUB 1300: PRINT CHR$(8) CHR$(8);:A$ = B$: GOSUB 1100: GET A$: PRINT A$: IF A$ <"1" OR A$ >"3" THEN 310
315 CY = VAL(A$) -1: IF PI(CX,CY) THEN 302
320 IF PL THEN PI(CX,CY) = PL -3 *(PL = 2): GOTO 330
325 PI(CX,CY) = 1
330 MO = MO +1: HCOLOR= 5:X = PO(CX,CY,0):Y = PO(CX,CY,1): IF PL = 2 THEN GOSUB 1650: GOTO 340
335 GOSUB 1600
340 IF PL THEN PL = PL +1 -2 *(PL = 2): GOSUB 2100: GOTO 300
350 IF MO = 2 THEN SX = CX:SY = CY
355 IF MO = 1 THEN FX = CX:FY = CY
360 IF MO = 4 THEN TX = CX:TY = CY
400 MO = MO +1: GOSUB 2100: FOR I = 0 TO 7: IF AR(I) = -2 THEN 410
401 NEXT : FOR I = 0 TO 7: IF AR(I) = 2 THEN 410
405 NEXT : GOTO 430
410 K = I: IF K >2 THEN 415
411 FOR I = 0 TO 2: IF PI(I,K) = 0 THEN CX = I:CY = K: GOTO 490
412 NEXT : STOP
415 IF K >5 THEN 420
416 FOR I = 0 TO 2: IF PI(K -3,I) = 0 THEN CX = K -3:CY = I: GOTO 490
418 NEXT : STOP
420 IF K = 7 THEN 425
421 IF PI(0,2) = 0 THEN CX = 0:CY = 2: GOTO 490
422 IF PI(1,1) = 0 THEN CX = 1:CY = 1: GOTO 490
423 CX = 2:CY = 0: GOTO 490
425 IF PI(0,0) = 0 THEN CX = 0:CY = 0: GOTO 490
426 IF PI(1,1) = 0 THEN CX = 1:CY = 1: GOTO 490
427 CX = 2:CY = 2: GOTO 490
430 IF PI(1,1) = 0 THEN CX = 1:CY = 1: GOTO 490
431 IF MO = 2 THEN CX = 0:CY = 2: GOTO 490
432 IF MO = 4 AND (FX = 2 OR FX = 0) AND (FY = 2 OR FY = 0) THEN CX = 0:CY = 1: GOTO 490
433 IF MO = 4 AND PI(0,0) = 0 THEN CX = 0:CY = 0: GOTO 490
434 IF MO = 4 AND PI(2,2) = 0 THEN CX = 2:CY = 2: GOTO 490
437 IF MO < >3 THEN 450
439 IF (SX = 0 AND SY = 1) OR (SX = 1 AND SY = 2) THEN CX = 0:CY = 2: GOTO 490
440 IF (SX = 1 AND SY = 0) OR (SX = 2 AND SY = 1) THEN CX = 2:CY = 0: GOTO 490
442 CX = 2 -SX:CY = 2 -SY: GOTO 490
450 IF MO < >5 THEN 489
452 IF (SX = 2 OR SX = 0) AND (SY = 2 OR SY = 0) THEN 455
453 GOTO 470
455 IF SX < >TX THEN 460
456 CX = TX: FOR I = 0 TO 2: IF PI(CX,I) = 0 THEN CY = I: GOTO 490
457 NEXT : STOP
460 CY = TY: FOR I = 0 TO 2: IF PI(I,CY) = 0 THEN CX = I: GOTO 490
465 NEXT : STOP
470 IF SX = 0 AND SY = 1 THEN CX = 1:CY = 2: GOTO 490
475 IF SX = 1 AND SY = 2 THEN CX = 0:CY = 1: GOTO 490
480 IF SX = 2 AND SY = 1 THEN CX = 1:CY = 0: GOTO 490
485 IF SX = 1 AND SY = 0 THEN CX = 2:CY = 1: GOTO 490
489 CX = INT( RND(1) *3):CY = INT( RND(1) *3): IF PI(CX,CY) THEN 489
2000 FOR I = 0 TO 7:AR(I) = 0: NEXT :AR(6) = PI(2,0) +PI(1,1) +PI(0,2):AR(7) = PI(0,0) +PI(1,1) +PI(2,2)
2010 FOR J = 0 TO 2: FOR K = 0 TO 2:AR(J) = PI(K,J) +AR(J): NEXT : NEXT : FOR J = 0 TO 2: FOR K = 0 TO 2:AR(J +3) = PI(J,K) +AR(J +3): NEXT : NEXT : RETURN
2100 GOSUB 2000: FOR I = 0 TO 7: IF AR(I) = -3 OR AR(I) = 3 THEN 2120
2110 NEXT
2115 FOR K = 0 TO 2: FOR J = 0 TO 2: IF PI(K,J) = 0 THEN RETURN
2116 NEXT : NEXT : POP :A$ = "A STALEMATE!": HOME : GOSUB 1300: GOTO 2150
2120 POP : HOME : GOSUB 1800: FOR J = 1 TO 20: CALL CA: NEXT
2125 IF PL AND AR(I) = 3 THEN A$ = "PLAYER ONE HAS WON!": GOSUB 1300: GOTO 2150
2130 IF PL AND AR(I) = -3 THEN A$ = "PLAYER TWO HAS WON!": GOSUB 1300: GOTO 2150
2135 IF AR(I) = 3 THEN A$ = "THE HUMAN WON??!! IMPOSSIBLE!": GOSUB 1300: GOTO 2150
2140 IF AR(I) = -3 THEN A$ = "THE COMPUTER WON, OF COURSE!": GOSUB 1300: GOTO 2150
2150 PRINT : PRINT "THIS GAME IS OVER, PLAY AGAIN?";: GET A$: IF A$ < >"Y" AND A$ < >"N" THEN VTAB PEEK(37): GOTO 2150
2160 IF A$ = "N" THEN 1700
2170 GOTO 200
63998 REM <CTRL-M>BY CHRIS KOERITZ<CTRL-M>RT. 5, BOX 331B<CTRL-M>CHARLOTTESVILLE, VA 22901<CTRL-M>WRITE IF YOU HAVE PROBLEMS<CTRL-M>
63999 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>======<CTRL-M>BY TMH ---<CTRL-M>======<CTRL-M>